import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DELL
 * Date: 2023-04-08
 * Time: 15:47
 */
public class Action {
    // 创建一个启动类
    public static void main1(String[] args) {
        // 获取 bean 对象的第一种方法
        // 1. 获取 Spring            此处的文件名和创建的 resources 文件名底下的文件.xml文件一致
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

        // 2. 获取 Spring 中的 Student 对象
        Student student = (Student) context.getBean("student");

        // 3. 调用验证
        student.fun();
    }

    /**
     * 第一种和第二种方法的区别在于 当有一个类被重复注册到 spring-config-xml中时,
     * 只能根据 id获取 否则会进行报错找不到对应的bean对象. 只有当Spring中只有一个
     * 该对象时使用此方法可以
     *
     *
     */

    public static void main2(String[] args) {
        // 获取 bean 对象的第二种办法
        // 1. 获取 Spring
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

        // 2. 获取 Spring 中的 Student 对象
        Student student = context.getBean(Student.class);

        // 3. 调用方法验证
        student.fun();
    }

    public static void main(String[] args) {
        // 获取 bean 对象的第三种方法
        // 当有两个不同的 id 来自同一个类时

        // 1. 获取 Spring
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

        // 2. 获取 Spring 中的 不同 Student 类对象
        Student student = context.getBean("student", Student.class);
        Student student1 = context.getBean("student1", Student.class);

        // 3. 调用方法验证

        student.fun();
        student1.fun();
    }

}
